home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / FROMUTS / REPLAY / allofit / !ARMovie / ProgIf < prev    next >
Text File  |  1992-09-21  |  15KB  |  401 lines

  1.                       The programmer's view of Acorn Replay
  2.                       =====================================
  3.  
  4. Introduction
  5. ------------
  6.  
  7. The software for replaying movies resides in the directory !ARMovie (think of
  8. it like a rather large system directory - currently about 640KBytes). The !Boot
  9. file for !ARMovie sets up the computer to play movies:
  10.  
  11. - loads the iconsprites for the AE7 filetype
  12. - sets File$Type for AE7
  13. - sets the RunType alias for AE7 to point to the Player program
  14.  
  15. - sets ARMovie$Dir so that the Player program knows where it is
  16.   (there are dither tables and sound code in the directory)
  17.  
  18. - ensures the computer has ColourTrans loaded (from the system directory -
  19.   any version will do)
  20.  
  21. After this, double clicking on an Acorn Replay Movie will play the movie on the
  22. desktop. Just running the program at the cli will play it. A program can do:
  23.  
  24. SYS"Wimp_StartTask","movie file name"
  25.  
  26. to play the movie.
  27.  
  28. The program attached to !ARMovie is a minimal desktop viewer for replay files -
  29. it can display the helpful sprite and allows desktop control of a few of the
  30. capabilities of the Acorn Replay Player program. See the section on ARMovie$Dir
  31. below for information on how to treat !ARMovie.
  32.  
  33. Note that the Player program has to take over the entire machine in order to
  34. get its work done. It consists of independant interrupt run processes:
  35.  
  36. - file chunk loader
  37. - master time 'conductor'
  38. - video decompressor
  39. - video frame refresh and dither
  40. - sound player
  41. - mouse event handler
  42.  
  43. The video sections of this code are custom assembled to suit the particular
  44. screen mode etc.
  45.  
  46. The interrupt run processes are communicating using shared memory in the
  47. ordinary virtual address space - a wimp task swap would be fatal... A large
  48. amount is memory is required:
  49.  
  50. - double buffer for the file I/O (odd and even chunk size given in the
  51.   AE7 file header)
  52. - double buffered queue of decompressed frames
  53. - queue of sound chunks
  54.  
  55. The amount of memory required is at least:
  56.  
  57.   "odd" chunk size + "even" chunk size + 320K 
  58.   + 48K (or more) if sound is to be played
  59.   + 128K for dithering tables
  60.   (the video compressor program gives an accurate value)
  61.  
  62. The Player program can use more memory if it is available! It will (by default)
  63. return with a textual error if there isn't enough memory.
  64.  
  65. A major limitation of the video frame refresh and dither section of the
  66. program is that it uses word addressing in order to paint on the screen:
  67. this results in the displayed section be somewhat to the left or right of
  68. the desired position. With 16bpp it can be 2 pixels out, 8 bpp 4 pixels, 4bpp
  69. 8 pixels, 2bpp 16 pixels, 1bpp 8 pixels. The program rounds the pixel address
  70. to the word address to minimise the total effect, thus making it 16bpp +/- 1
  71. pixel etc.
  72.  
  73. ADPCM sound is Copyright 1992 by Stichting Mathematisch Centrum, Amsterdam,
  74. The Netherlands. See notice at the end.
  75.  
  76. Simple Control
  77. --------------
  78.  
  79. The Player program has some default controls in it:
  80.  
  81. Esc
  82.    
  83.    The Esc key terminates a display sequence.
  84.  
  85. Menu (Mouse middle button)
  86.  
  87.    The Menu button (also) terminates a display sequence.
  88.  
  89. Adjust (Mouse right button)
  90.  
  91.    The Adjust button pauses video and sound while it is held down.
  92.  
  93. Other capabilities may be provided as icons by the calling program.
  94.  
  95. Parameters
  96. ----------
  97.  
  98. The Player program also accepts a list of parameters on the command line after
  99. the Acorn Replay movie file. These are
  100.  
  101. -At <Number>,<Number>
  102.  
  103.    Specifies the position of the bottom left corner of the replayed movie in
  104.    OS units x,y. Player will move the output display such that it is entirely
  105.    on screen. Note the comments above about precision of positionning the
  106.    output.
  107.  
  108. -Big
  109.  
  110.    If the movie is <=160 X, <=128 Y, then Player will play it on a Mode 13
  111.    320 by 256 pixel screen filling the screen. If the movie is <=192 X,
  112.    <=144 Y, then Player will install a temporary Mode 96 which gives an
  113.    overscanned Mode 13 display and play the movie filling the screen.
  114.  
  115.    The -nomenu flag is overridden when -big is asserted.
  116.  
  117. -Explode <Dir$>
  118.  
  119.    Player decompresses the specified section of the movie (-startat and
  120.    -playfor) and places the result as a sequence of frames in the directory
  121.    Dir$ with the following name for each frame:
  122.  
  123.       FNZNUM(frame%DIV75DIV77)+"."+FNZNUM(frame%DIV75 MOD77)+"."+FNZNUM(frame%MOD75)
  124.       DEF FNZNUM(A)=RIGHT$("0"+STR$(A),2)
  125.  
  126.    Frames start at zero. Each frame is stored as a p15 file (textual header
  127.    plus 5,5,5 R,G,B data held as uncompressed 16 bit values with R as bits
  128.    0-4, G as bits 5-9, B as bits 10-14). This can take quite a while!
  129.  
  130. -Leave
  131.  
  132.    By default, Player removes the output from the display. If -Leave is
  133.    specified it will leave the output on the display when the program is
  134.    left (either by getting to the end or Escape/Menu). Leave state is forced
  135.    if the user exits by clicking on the CAPTURE/EXIT button.
  136.  
  137. -Loop
  138.  
  139.    Player will loop back to the start of the movie when it gets to the end,
  140.    thus playing for ever. This overrides -playfor.
  141.  
  142. -Loop <number>
  143.  
  144.    Player will loop back to the start of the movie when it gets to the end,
  145.    for the specified number of times.
  146.  
  147.    Note that both forms of loop may have problems on a CD-ROM where access
  148.    time to move the head from finish to start might cause a break in the
  149.    sequence.
  150.  
  151. -Mute
  152.  
  153.    Player starts up with sound initially turned off.
  154.  
  155. -NoAdjust
  156.  
  157.    Suppresses the use of Adjust for pause.
  158.  
  159. -NoError
  160.  
  161.    Suppresses all possible textual errors from the Player program. The
  162.    variable ARMovie$ReturnCode will contain the error.
  163.  
  164. -NoMenu
  165.  
  166.    Suppresses the use of Menu for exit.
  167.  
  168. -PlayFor <Number>
  169.  
  170.    <Number> represents a time in centiseconds: this amount of the movie is
  171.    played and the program exits. Note that Pause, fast forward, half speed
  172.    etc. do not affect this time limit - it represents a duration in frames
  173.    (or feet of the original film) rather than a time in the future.
  174.  
  175. -Quiet
  176.  
  177.    Disables the sound permanently. (Unlike -Mute it cannot be turned back on
  178.    with the controls if they are provided)
  179.  
  180. -Relative
  181.  
  182.    Changes button definitions such that the origin is relative to the -at
  183.    value rather than absolute.
  184.  
  185. -Startat <Number>
  186.  
  187.    <Number> represents a time in centiseconds: the movie is played from this
  188.    point. It can be very time consuming to reach a random point in a none
  189.    key frame movie, but Player can do it if necessary. Key frame movies
  190.    should only take a few seconds to start playing at any point.
  191.  
  192. -Silent
  193.  
  194.    Starts playing with sound initially disabled.
  195.  
  196. -Speed <Number>
  197.  
  198.    <Number> represents a speed up ratio: the movie is played faster or
  199.    slower than normal. For example -speed 2 or -speed 0.5 for twice speed
  200.    or half speed play. It is recommended that -mute is used at the same time
  201.    as -speed... No attempt is made to enforce speed ratios that the computer
  202.    can actually decompress, so use with care!
  203.  
  204. -Track <Number>
  205.  
  206.    <Number> selects which of the multiple sound tracks in the ARMovie file is
  207.    played. The track must exist.
  208.  
  209. In addition to those parameters, the calling program can specify the positions
  210. of control buttons on screen. The Player program caters for buttons with the
  211. following functions:
  212.  
  213.    exit
  214.    capture exit (exactly like exit, but leaves pixel map on screen)
  215.    pause
  216.    single frame advance when in pause mode
  217.    fast forward
  218.    half speed
  219.    quiet (no sound)
  220.    loud (sound back on)
  221.    mute (toggle sound)
  222.  
  223. By default no button definitions exist except for pause, defined as the
  224. whole screen: so by default a left click will pause the movie and another
  225. will restart it. Buttons are defined with the initial character followed by
  226. the bottom left corner i.e. E10,40 - this gives a default sized button of 32
  227. OS units. E10,40,50 gives a square button of 50 OS units. E10,40,50,25 gives
  228. a rectangular button 50 OS units wide, 25 tall. (-relative makes button
  229. definitions relative to the -at position). Defining any button position will
  230. remove the effect of the default pause button; use -NoMenu and -NoAdjust if
  231. you need to prevent the other mouse buttons.
  232.  
  233. A typical command line might be:
  234.  
  235. <movie name> -loop -leave -startat 2000 -playfor 2000 -quiet E640,512 P0,0
  236.  
  237. case is irrelevant.
  238.  
  239. System Variables
  240. ----------------
  241.  
  242. There are several system variables which affect the Acorn Replay player program:
  243.  
  244. ARMovie$Dir
  245.  
  246.    This is set by the !ARMovie application so that Player can get at its
  247.    resources - Player won't work without this variable! Applications should
  248.    only set this variable if it is not already set: for example, suppose you
  249.    wish to play a movie on filer_boot of your application and therefore need
  250.    to have Player work and have therefore included a copy of !ARMovie on your
  251.    disc. You should do:
  252.  
  253.    IF "<ARMovie$Dir>"="" THEN Run <My$Dir>.!ARMovie.!Boot
  254.  
  255.    This allows for new versions of the !ARMovie application to replace the one
  256.    on your disc by being seen first. IT WILL BE NECESSARY FOR THIS TO HAPPEN:
  257.    FOR EXAMPLE, NEW VIDEO HARDWARE WILL NEED NEW VERSIONS OF !ARMovie AND
  258.    Player.
  259.  
  260. ARMovie$Place
  261.  
  262.    Contains the position on screen where the player will put the movie as
  263.    <leftx> <bottomy> - for example *set ARMovie$Place 640 512
  264.  
  265.    Controlling programs must set this immediately before running the movie.
  266.  
  267.    Value is only used if -At parameter is not given.
  268.  
  269. ARMovie$PrefMode
  270.  
  271.    Used by the machine's owner to get the movie to display in a different
  272.    mode to the current one. For example, a user may like working in a very
  273.    high resolution mode with a low number of colours. Player can display
  274.    movies in such modes but they don't look good, so the user can set
  275.    ARMovie$PrefMode to an alternative mode. Note that the user won't be able
  276.    to see the buttons. (Currently ARMovie$PrefMode is the only way to get
  277.    playback in 16 bit per pixel modes, since the desktop doesn't operate
  278.    in those modes).
  279.  
  280.    If ARMovie$PrefMode is 13, then -Big is assumed.
  281.  
  282. [Aside: minimal mode if -1: Player installs a 320x128 pixel temporary Mode 96
  283. with the same timing as Mode 15.]
  284.  
  285. ARMovie$Suffix
  286.  
  287.    Used by the machine's owner to preselect different versions of the
  288.    movie if they are available. For example, if one knows that one's machine
  289.    can only manage 12.5fps movies, *set ARMovie$Suffix to 2 and Player will
  290.    preferentially play the 12.5fps movies. See the file on AE7 file naming
  291.    conventions.
  292.  
  293. ARMovie$4Colour
  294.  
  295.    If this variable is defined, then square pixel hi-resolution (e.g. mode 27)
  296.    displays will be done in colour, provided a lookup table has been defined.
  297.    The quality of this is not wonderful, particularly in the red/magenta area
  298.    of the colour space, because these colours are missing from the default
  299.    RISC OS colour palette.
  300.  
  301.    The program 'Make4col11", in the !ARMovie.MovingLine directory, will make
  302.    the appropriate lookup tables for the current palette: this does take
  303.    some time... The !ARMovie directory needs to be on a writeable file
  304.    system in order for the extra files to be written to it.
  305.  
  306. Some system variables are used by Player to return information to the calling
  307. programs:
  308.  
  309. ARMovie$Return
  310.  
  311.    Player sets this to the actual position on screen of the video information.
  312.    If -leave has been set or use user has exitted Player using the CAPTURE/EXIT
  313.    button, this is the section that has been 'dirtied' and should be repainted
  314.    by the window manager. It is set to
  315.  
  316.    <leftx> <bottomy> <rightx> <topy> <C>
  317.  
  318.    where the <C> is present only if the user has pressed CAPTURE/EXIT.
  319.  
  320. ARMovie$ReturnCode
  321.  
  322.    If -NoError has been set, this will contain the textual error message.
  323.    It will not exist if there was no error.
  324.  
  325. ARMovie$Sound
  326.  
  327.    Player sets this to 0 if the sound has been disabled by clicking on
  328.    one of the icons, 1 if it is enabled. This, plus the use of -mute,
  329.    allows sound on/off state to be preserved between the applications and
  330.    the Player program.
  331.  
  332. ARMovie$Time
  333.  
  334.    Player sets this to the number of centiseconds of movie which have been
  335.    played. Note that (like -playfor) this refers strictly to the amount of
  336.    the movie, not the total elapsed time: playing a movie and playing the
  337.    movie pausing every frame for an hour will end up with the same value
  338.    for ARMovie$Time.
  339.  
  340. ARMovie$Version
  341.  
  342.    Player sets this to its version number and date string.
  343.  
  344. Acorn Replay Icons
  345. ------------------
  346.  
  347. The !ARMovie application has already *iconsprite'd the icons for the AE7
  348. filetype into the window manager's icon pool - you should not include them
  349. (or any other system icons...) in your application's own !Sprite files.
  350.  
  351. A standard set of icons is made available for the buttons used to control
  352. the player. They are in <ARMovie$Dir>.Sprites (plus Sprites22 and Sprites23
  353. using the RISC OS 3.00 discipline for alternative resolutions). This gives
  354. all eight buttons with names 'exit' 'pause' 'single' 'fast' 'half' 'quiet'
  355. 'loud' and 'mute'. In addition, there are 'play' and 'pplay' (pushed play)
  356. buttons to complete a control panel.
  357.  
  358. Applications wishing to use the button set should load (check for failure)
  359. the sprite file into their own sprite area (rather than *iconsprite'ing
  360. it - the definitions use up quite a bit of memory).
  361.  
  362. If you wish to use your own icons for control buttons (for example, you
  363. want the buttons to be a different size) then please ensure that the
  364. buttons appearance (especially the shape of the glyph design) is close to
  365. the standard ones.
  366.  
  367. The sprite file <ARMovie$Dir>.Default contains the default sprite used by
  368. the !ARMovie program to indicate that an ARMovie file can be dragged there.
  369.  
  370. Not done yet
  371. ------------
  372.  
  373. The player does not, in fact, respond to double speed and half speed play.
  374.  
  375. ADPCM sound copyright notice
  376. ----------------------------
  377.  
  378. ADPCM sound code was implemented by Mark Taunton of Acorn Computers using
  379. original code supplied with the following notice:
  380.  
  381. Copyright 1992 by Stichting Mathematisch Centrum, Amsterdam, The
  382. Netherlands.
  383.  
  384.                         All Rights Reserved
  385.  
  386. Permission to use, copy, modify, and distribute this software and its 
  387. documentation for any purpose and without fee is hereby granted, 
  388. provided that the above copyright notice appear in all copies and that
  389. both that copyright notice and this permission notice appear in 
  390. supporting documentation, and that the names of Stichting Mathematisch
  391. Centrum or CWI not be used in advertising or publicity pertaining to
  392. distribution of the software without specific, written prior permission.
  393.  
  394. STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
  395. THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  396. FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
  397. FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  398. WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  399. ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
  400. OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  401.